package Top200;

import java.util.LinkedList;
import java.util.List;

/**
 * @author zhangmin
 * @create 2022-02-23 10:00
 * 模拟遍历
 */
public class spiralOrder54 {

    public List<Integer> spiralOrder(int[][] matrix) {
        int m=matrix.length,n=matrix[0].length;
        int[][] dir=new int[][]{{0,1},{1,0},{0,-1},{-1,0}};
        boolean[][] visited=new boolean[m][n];
        int dIndex=0;
        LinkedList<Integer> res=new LinkedList<>();
        int row=0,col=0;
        for (int i = 0; i < m*n; i++) {
            res.add(matrix[row][col]);
            visited[row][col]=true;
            int nexRow=row+dir[dIndex][0],nextCol=col+dir[dIndex][1];
            if (nexRow>=m||nexRow<0||nextCol>=n||nextCol<0||visited[nexRow][nextCol]){
                dIndex=(dIndex+1)%4;
            }
            row=row+dir[dIndex][0];
            col=col+dir[dIndex][1];
        }
        return res;
    }
}
